package appbenedictoxvi;

import java.util.ArrayList;

public class AdmAula {

    private ArrayList<Aula>aulas;
    
    public AdmAula() {
        aulas= new ArrayList<Aula>();
    }

    public ArrayList<Aula> getAulas() {
        return aulas;
    }

    public void setAulas(ArrayList<Aula> aulas) {
        this.aulas = aulas;
    }
    public void registrarAula(String cod_aula,String nom_aula) throws BusinessException{
        
        validarDatos(cod_aula,nom_aula);
        //Crear una aula nueva
        Aula aula = new Aula (cod_aula,nom_aula);
        //Adicionar la nueva aula a la colección
        aulas.add(aula);  
    }
    
    public Aula buscarAula(String cod_aula)
    {
        for (Aula aula:aulas){
            if (aula.getCod_aula().equals(cod_aula))
            {
            return aula;
            }   
        }
        return null;
    }
    
    private void validarDatos(String cod_aula,String nom_aula) throws BusinessException{
        validarDatosMandatorios(cod_aula,nom_aula);
        validarDuplicidad(cod_aula);
    }
    
    private void validarDatosMandatorios(String cod_aula,String nom_aula) throws BusinessException{
        String mensaje="";
        if (cod_aula==null || cod_aula.isEmpty()){
            mensaje+="Código no puede ser vacio. ";
        }
        if (nom_aula==null || nom_aula.isEmpty()){
            mensaje+="Nombre no puede ser vacio.";
        }
        //Si hay mensaje que mostrar lanzar la exepción
        if (!mensaje.isEmpty()){
            throw new BusinessException(mensaje);
        }
    }
    private void validarDuplicidad(String cod_aula) throws BusinessException{
        Aula aula = buscarAula(cod_aula);
        if (aula!=null){
            String mensaje ="Código " + cod_aula + " duplicado";
            throw new BusinessException(mensaje);
        }
    }
    public void eliminarAula(String cod_aula) throws BusinessException
    {
         Aula aula = buscarAula(cod_aula);
        if (aula != null){
            aulas.remove(aula);
           
        } else {
            ValidarEliminacionDeUnAulaInexistente(cod_aula);  
        }
    }

    private void ValidarEliminacionDeUnAulaInexistente(String cod_aula) throws BusinessException 
    {
        Aula aula = buscarAula(cod_aula);
        if (aula == null) {
            String mensaje = "Aula a eliminar con código " + cod_aula + " no existe.";
            throw new BusinessException(mensaje);
        }
    }
    
    public void modificarAula(String cod_aula, String nom_aula)
    {
        Aula aula = buscarAula(cod_aula);

        if (aula != null) {
          
            aula.setNom_aula(nom_aula);          
        }
    }
}
